package futbol

import org.junit.Assert
import org.junit.Before
import org.junit.Test
import exepcion.PartidoException
import exepcion.JugadorException

class TestCondicionalColleciones {
	
	Jugador jugadorCond
	Partido partido2 
	CondicionDeHora condhor
	Estandar estandar
	Condicional condicional
	Solidario solidario
	
	@Before
	def void init(){
		partido2 = new Partido
		condicional = new Condicional
		estandar = new Estandar
		solidario = new Solidario
		jugadorCond = new Jugador(condicional)
		condhor = new CondicionDeHora
		jugadorCond.condicion= condhor
		partido2.setHora(2000)
		partido2.setLugar(2)
		condhor.hora=2000
	}
	
	@Test //prueba para ver si al exisitir jugadores de varios tipos aun puede inscribirse
	def void testDeCupoSemiVacio(){
		partido2.agregarJugador(new Jugador(condicional))//se como hacer un for, pero no encontre la sintaxis para hacer uno en xtend :I asi q decidi q ctrl c+v es mi amigo
		partido2.agregarJugador(new Jugador(estandar))
		partido2.agregarJugador(new Jugador(solidario))
		partido2.agregarJugador(new Jugador(solidario))
		partido2.agregarJugador(new Jugador(solidario))
		partido2.agregarJugador(new Jugador(estandar))
		partido2.agregarJugador(new Jugador(condicional))
		partido2.agregarJugador(new Jugador(condicional))	
		var i= partido2.cantidadDeJugadoresActuales
		jugadorCond.inscribirmeAPartido(partido2)
		Assert::assertTrue(i+1==partido2.cantidadDeJugadoresActuales)
		//basicamente uso el assert para testear si la cantidad de jugadores se incremento en 1 y no kikeo a nadie por accidente o algo por el estilo
	}
	
	
	@Test(expected=typeof(JugadorException)) //se prueba isncribir un condicional si hay 10 estandares
	def void testDeCupoLlenoPorEstandars(){
			partido2.agregarJugador(new Jugador(estandar))
			partido2.agregarJugador(new Jugador(estandar))
			partido2.agregarJugador(new Jugador(estandar))
			partido2.agregarJugador(new Jugador(estandar))
			partido2.agregarJugador(new Jugador(estandar))
			partido2.agregarJugador(new Jugador(estandar))
			partido2.agregarJugador(new Jugador(estandar))
			partido2.agregarJugador(new Jugador(estandar))
			partido2.agregarJugador(new Jugador(estandar))
			partido2.agregarJugador(new Jugador(estandar))
			jugadorCond.inscribirmeAPartido(partido2)
		}
	@Test(expected=typeof(JugadorException)) //se prueba isncribir un condicional si hay 10 solidarios
	def void testDeCupoLlenoPorSolidarios(){
			partido2.agregarJugador(new Jugador(solidario))
			partido2.agregarJugador(new Jugador(solidario))
			partido2.agregarJugador(new Jugador(solidario))
			partido2.agregarJugador(new Jugador(solidario))
			partido2.agregarJugador(new Jugador(solidario))
			partido2.agregarJugador(new Jugador(solidario))
			partido2.agregarJugador(new Jugador(solidario))
			partido2.agregarJugador(new Jugador(solidario))
			partido2.agregarJugador(new Jugador(solidario))
			partido2.agregarJugador(new Jugador(solidario))
			jugadorCond.inscribirmeAPartido(partido2)
		}
	
	@Test(expected=typeof(JugadorException)) // probar inscribir un condicional si existen 10 jugadores mezclados entre condicionales, solidarios y estandars
	def void tesdDeCupoLLenoMixto(){
		partido2.agregarJugador(new Jugador(condicional))
		partido2.agregarJugador(new Jugador(condicional))
		partido2.agregarJugador(new Jugador(condicional))
		partido2.agregarJugador(new Jugador(estandar))
		partido2.agregarJugador(new Jugador(solidario))
		partido2.agregarJugador(new Jugador(solidario))
		partido2.agregarJugador(new Jugador(solidario))
		partido2.agregarJugador(new Jugador(estandar))
		partido2.agregarJugador(new Jugador(condicional))
		partido2.agregarJugador(new Jugador(condicional))	
		jugadorCond.inscribirmeAPartido(partido2)
		
	}
}